package com.example.texted.volatiletest;

public class Singleton {
    // volatile 保证可见性和禁止指令重排序
    private static volatile Singleton singleton;

    private Singleton() {
    }

    public static Singleton getInstance() {
        // 第一次检查
        if (singleton == null) {
            // 同步代码块
            synchronized (Singleton.class) {
                // 第二次检查
                if (singleton == null) {
                    // 对象的实例化是一个非原子性操作
                    singleton = new Singleton();
                }
            }
        }
        return singleton;
    }

    public void Do() {

    }
}
